/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ModeloLogicoSistema;
import com.itextpdf.text.BaseColor;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import javax.print.Doc;
import javax.print.DocFlavor;
import javax.print.DocPrintJob;
import javax.print.PrintService;
import javax.print.PrintServiceLookup;
import javax.print.SimpleDoc;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import javax.swing.JFileChooser;
import javax.swing.JOptionPane;
import javax.swing.filechooser.FileNameExtensionFilter;

import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.FontFactory;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfWriter;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.Font;
import com.itextpdf.text.PageSize;
import com.itextpdf.text.Rectangle;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author carlos
 */
public class Imprimir_ticket {
   
    private File ruta_destino = null;
    Font fontNormal    = new Font(Font.getFamily("ARIAL"),8,Font.BOLD);  
    private ArrayList<String> servicio    = new ArrayList<String>();
    private ArrayList<String> cantidad    = new ArrayList<String>();
    private ArrayList<String> detalle     = new ArrayList<String>();
    private ArrayList<String> precio      = new ArrayList<String>();
    
    private String orden     = null;
    
    private String clientenombre    = null;
    private String idcliente;
    private String direccioncliente;
    private String telefonocliente;
   
    
    private String fecha      = null;
    private String fechahoy   = null;       
    private String fechapara  = null;
    
    //private String subtotal   = null;
    private String total      = null;
    private String descuento  = null;
    private String sena       = null;
    private String saldo      = null;
    
    private String Observaciones = null;
    
    private Integer aux = 0;
    
    Document mipdf;
    float[] widths = {48 , 4 , 48};
    PdfPTable tabla_principal = new PdfPTable(widths);
    private FileOutputStream outputStream;
    
    
   public void imprimir(Orden orden, Cliente cliente, ArrayList<ServicioContratado> serviciosContratados,ArrayList<ServicioContratado> serviciosEspContratados) {
       Integer codOrden=orden.getCodOrden();
       Integer codCliente=cliente.getNroCliente();
       ArrayList<Integer> cantidades=new ArrayList();  
       ArrayList<String> descripciones=new ArrayList(); 
       ArrayList<String>  detalles=new ArrayList(); 
       ArrayList<Double> precios=new ArrayList();
       String nombre = "", calle  = "",telefono,fechaPedido = "", fechaEntrega = "",horaDesde = "",horaHasta = "",observaciones="",localidad;
       Integer numcalle = null,cantidad;
       Double precioTotal = null,descuento,senia, saldo ;
       try{
           nombre = cliente.getNombre()+" "+ cliente.getApellido();
       }catch(Exception e){
           //nombre = "";
       }     
       try{
            calle  = cliente.getCalle();
       }catch(Exception e){
             //calle  = "salerno";
       }
       try{
            numcalle = Integer.parseInt( cliente.getNroCalle());
       }catch(Exception e){
            //numcalle = 3424;
       }
       try{
           telefono = cliente.getTelFijo();
            if(telefono==null){
                telefono= cliente.getCel();
            }
            if(telefono==null){
                throw new Exception();
            }
       }catch(Exception e){
             telefono = "-";
       }
       try{
           fechaPedido    = orden.getFechaPedido();
       }catch(Exception e){
             //fechapedido= "21-10-013";
       }
       try{
           fechaEntrega  = orden.getFechaEntregaPactada();
       }catch(Exception e){
           //fechaentrega  = "21-10-013";
       }
       try{              
            cantidad = serviciosContratados.size() + serviciosEspContratados.size();
       }catch(Exception e){             
            cantidad = 2;             
       }
       try{              
             observaciones = orden.getObservaciones();

             if(observaciones==null | observaciones.equalsIgnoreCase("null")){
                 observaciones="";
             }
       }catch(Exception e){             
             observaciones = "";
             }
       try{              
             precioTotal = orden.getMontoTotal(); 
       }catch(Exception e){             
             //preciototal = 33.3;
       }
       try{              
             descuento = orden.getDescuento();
       }catch(Exception e){             
             descuento = 0.0;
             }
       try{              
              senia = orden.getMontoAbonado();
       }catch(Exception e){             
             senia = 0.0;
             }
       try{              
             saldo = orden.getMontoAdeudado();
       }catch(Exception e){             
             saldo = 0.0;
       }
       try{
           localidad= cliente.getLocalidad();
       }catch(Exception e){
           localidad="";
       }
       try{
           horaDesde=orden.getHoraPactadaDesde();
       }catch(Exception e){}
       
       try{
           horaHasta=orden.getHoraPactadaHasta();
       }catch(Exception e){}
           
             for(ServicioContratado serv:serviciosContratados){
                 Integer cant=serv.getCantidad();
                 String desc=serv.getNombre();
                 String detalleS="Servicio Regular";
                 Double precio=serv.getPrecio();
                 cantidades.add(cant);
                 descripciones.add(desc);
                 detalles.add(detalleS);
                 precios.add(precio);
             }
             for(ServicioContratado serv:serviciosEspContratados){
                 Integer cant=serv.getCantidad();
                 String desc=serv.getNombre();
                 String detalleS="Servicio Especial";
                 Double precio=serv.getPrecio();
                 cantidades.add(cant);
                 descripciones.add(desc);
                 detalles.add(detalleS);
                 precios.add(precio);
             }
        try {
            tablaprincipal(codOrden,codCliente, nombre,calle, numcalle,localidad, telefono, fechaPedido, fechaEntrega,horaDesde,horaHasta, cantidades, descripciones, detalles, precios, observaciones, precioTotal, descuento, senia, saldo);
        } catch (IOException ex) {
            Logger.getLogger(Imprimir_ticket.class.getName()).log(Level.SEVERE, null, ex);
        } catch (DocumentException ex) {
            Logger.getLogger(Imprimir_ticket.class.getName()).log(Level.SEVERE, null, ex);
        }
           
       
   }
    
   public void tablaprincipal(Integer num_orden ,Integer idcliente , String nombre_cliente,String direccion_cliente ,Integer num_direccion_cliente, String localidad,String tel_cliente, String fecha_hoy ,String fecha_pactada,String h_desde,String hasta ,ArrayList<Integer> cantidad_orden , ArrayList<String> servicio_orden , ArrayList<String>  detalle_orden , ArrayList<Double> precio_orden,String observacion_orden,Double total_orden,Double descuento_orden,Double sena_orden,Double saldo_orden ) throws IOException, DocumentException {
    PageSize.A5.rotate( ); // pone apaizado la tabla
      
    this.orden              = String.valueOf( num_orden);
    this.clientenombre      = "Nombre              "+ nombre_cliente+"   ";
    this.idcliente          = "ID                  "+ idcliente +"       ";
    this.direccioncliente   = "Dirección           "+ direccion_cliente +"    "+ num_direccion_cliente +" "+ localidad +"";
    this.telefonocliente    = "Teléfono            "+ tel_cliente +"   ";
    this.fecha              = "Fecha   ";
    if(hasta != null && !hasta.equals("null") && !hasta.isEmpty()){
    this.fechahoy           = "Hoy     "                    + fecha_hoy +"      Delivery"   ;
    this.fechapara          = "Para    "+ fecha_pactada +"      Hora Entrega: "+ h_desde +"     hasta " + hasta +"";
    }else{
    this.fechahoy           = "Hoy     "+ fecha_hoy +""   ;
    this.fechapara          = "Para    "+ fecha_pactada +"      Hora Entrega: "+ h_desde +" ";
    
    }
    ////////////////////////////////////////////////////////////////
    for(Integer i  = 0 ; i < cantidad_orden.size() ; i ++){
                    
                    this.cantidad.add( String.valueOf(cantidad_orden.get(i)) + "                                           ");
    }
    
    ////////////////////////////////////////////////////////////////
    for(Integer i  = 0 ; i < servicio_orden.size() ; i ++){
                    
                    this.servicio.add( servicio_orden.get(i));
                
    }
    ////////////////////////////////////////////////////////////////
    for(Integer i  = 0 ; i < detalle_orden.size() ; i ++){
                    
                    this.detalle.add(detalle_orden.get(i) + "                                           ");
    }
    /////////////////////////////////////////////////////////////////
    for(Integer i  = 0 ; i < precio_orden.size() ; i ++){
                    
                    this.precio.add( String.valueOf(precio_orden.get(i)) + "                                           ");
       }
    ///////////////////////////////////////////////////////////////////
    
                 
    this.total        = String.valueOf(total_orden);                
    this.descuento    = String.valueOf(descuento_orden);                
    this.sena         = String.valueOf(sena_orden);                
    this.saldo        = String.valueOf(saldo_orden);               
                 
    this.Observaciones = observacion_orden;
    
    
    
    this.Colocar_Destino();
    //FileOutputStream outputStream = new FileOutputStream("C:\\Bibliotecas\\Documentos"+ ".pdf");
    FileOutputStream outputStream = new FileOutputStream(this.ruta_destino + ".pdf");
     this.tabla_principal.setWidthPercentage(100); //modificamos el ancho de la celda principal
     
     
     mipdf = new Document(PageSize.A5.rotate());
     PdfWriter.getInstance(mipdf, outputStream);
     
     
     
     this.tabla_principal.addCell(this.DisenarTicket(this.TicketCLiente()));
     
    
     this.tabla_principal.addCell(this.LineaEntreCortada());   
     
                                        
     this.tabla_principal.addCell(this.DisenarTicket(this.TicketLavadero()));    
    
    this.CrearTicket();
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
   }        
  
   public PdfPCell TicketCLiente(){    
   PdfPCell ticket = new PdfPCell(new Paragraph("Ticket Para Cliente", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));//agrego las fechas a las celdas
   ticket.setHorizontalAlignment(Element.ALIGN_CENTER);
   return ticket;
   }
   
   
   public PdfPCell TicketLavadero(){
   PdfPCell ticket = new PdfPCell(new Paragraph("Ticket Para Lavadero", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   ticket.setHorizontalAlignment(Element.ALIGN_CENTER);
   return ticket;
   }
   
   
   public PdfPTable Celda2_Encabezado(){
   
   PdfPCell cell = new PdfPCell(new Paragraph(" La Burbuja ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   cell.setHorizontalAlignment(Element.ALIGN_CENTER);
   cell.setBorder(Rectangle.NO_BORDER);
  
   PdfPCell cell1 = new PdfPCell(new Paragraph(" Gaspar Campos 1664", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   cell1.setHorizontalAlignment(Element.ALIGN_CENTER);
   cell1.setBorder(Rectangle.NO_BORDER);
  
   PdfPCell cell2 = new PdfPCell(new Paragraph("Teléfono 4465-2267", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   cell2.setHorizontalAlignment(Element.ALIGN_CENTER);
   cell2.setBorder(Rectangle.NO_BORDER);
  
   
   PdfPTable tabla = new PdfPTable(1);                     // creo la celda 
   
   tabla.addCell(cell);
   tabla.addCell(cell1);
   tabla.addCell(cell2);
                     
     
    
   return tabla;
   } 
   
   
   
   
   public  PdfPCell Celda3_NumOrden(){
   PdfPCell tercera  = new PdfPCell(new Paragraph("Orden Número : "+ this.orden +"", FontFactory.getFont("arial",11,Font.BOLD, BaseColor.BLACK)));                        //agrego las fechas a las celdas
   tercera.setHorizontalAlignment(Element.ALIGN_CENTER);
   tercera.setExtraParagraphSpace(5);
   return tercera;
   }
   
   
   
   
   public PdfPTable Celda4_Fecha(){
    
    PdfPCell cell1 = new PdfPCell(new Paragraph("                                     Fecha", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    cell1.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell1.setBorder(Rectangle.NO_BORDER);
  
    PdfPCell cell2 = new PdfPCell(new Paragraph(""+ this.fechahoy +"", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell2.setBorder(Rectangle.NO_BORDER);
  
    PdfPCell cell3 = new PdfPCell(new Paragraph(""+ this.fechapara +" ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    cell3.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell3.setBorder(Rectangle.NO_BORDER);
  
    PdfPTable fecha = new PdfPTable(1);
    
    fecha.addCell(cell1);
    fecha.addCell(cell2);
    fecha.addCell(cell3);
   
   return fecha;
   }
   
   
   public PdfPTable Celda5_Cliente(){
   
    PdfPCell cell2 = new PdfPCell(new Paragraph(""+ this.clientenombre +"", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    cell2.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell2.setBorder(Rectangle.NO_BORDER);
  
    PdfPCell cell3 = new PdfPCell(new Paragraph(""+ this.direccioncliente +"", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    cell3.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell3.setBorder(Rectangle.NO_BORDER);
      
    PdfPCell cell4 = new PdfPCell(new Paragraph(""+ this.telefonocliente +"", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    cell4.setHorizontalAlignment(Element.ALIGN_LEFT);
    cell4.setBorder(Rectangle.NO_BORDER);
    
    PdfPTable cliente = new PdfPTable(1);
    cliente.addCell(cell2);
    cliente.addCell(cell3);
    cliente.addCell(cell4);
    
    
   return cliente;
   }
   
   public PdfPCell Celda6_Cantidad(){
   PdfPCell celda1 = new PdfPCell(new Paragraph("  Cantidad      ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   celda1.setExtraParagraphSpace(5);
   
   return celda1;            
   }
   
   
   public PdfPCell Celda6_Servicio(){    
    PdfPCell celda2 = new PdfPCell(new Paragraph(" Servicio", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    celda2.setExtraParagraphSpace(5);
    
    return celda2;           
   }
   
   
   public PdfPCell Celda6_Detalle (){
    PdfPCell celda3 = new PdfPCell(new Paragraph(" Detalle       ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    celda3.setExtraParagraphSpace(5);
    
    return celda3;           
   }
   
   
   public PdfPCell Celda6_Precio (){
    PdfPCell celda4 = new PdfPCell(new Paragraph(" Precio        ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    celda4.setExtraParagraphSpace(5);
    
    return celda4;           
   } 
   
    
   
   public PdfPTable Celda7_Cantidad() throws DocumentException, IOException{          
  
       PdfPTable tabla = new PdfPTable(1);
  
       for(Integer i = 0; i < this.cantidad.size(); i++){
  
           tabla.addCell(this.getCell(this.cantidad.get(i)));
  
       }  
  
   return tabla;
   }
 
   
   
   public PdfPTable Celda7_Servicio() throws DocumentException, IOException {  
  PdfPTable tabla = new PdfPTable(1);
  for(Integer i = 0; i < this.servicio.size(); i++){
  tabla.addCell(this.getCell(this.servicio.get(i)));
  }  
  
   return tabla;
   }

    private PdfPCell getCell(String text) throws DocumentException, IOException {
     
   PdfPCell cell = new PdfPCell(new Paragraph("" + text   +"", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   cell.setHorizontalAlignment(Element.ALIGN_LEFT);
   cell.setBorder(Rectangle.NO_BORDER);
   return cell;
     }
   
    private PdfPTable LineaEntreCortada(){
    PdfPTable  tabla = new PdfPTable(1);
    
      for(Integer i = 0; i < 30; i++){
      PdfPCell cell = new PdfPCell(new Paragraph("   | ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
      cell.setHorizontalAlignment(Element.ALIGN_LEFT);
      cell.setBorder(Rectangle.NO_BORDER);
      
      tabla.addCell(cell);
      }   
    return tabla;
    }
    
    
    
   public PdfPTable Celda7_Detalle () throws DocumentException, IOException{
      
    PdfPTable  tabla = new PdfPTable(1);
   for(Integer i = 0; i < this.detalle.size(); i ++){
      tabla.addCell(this.getCell(this.detalle.get(i)));
   }   
    return   tabla;
   }
   
   
   
   public PdfPTable Celda7_Precio() throws DocumentException, IOException{ 
    
    PdfPTable  tabla = new PdfPTable(1);
    
       
   for(Integer i = 0; i < this.precio.size(); i ++){
      tabla.addCell(this.getCell(this.precio.get(i)));
   }  
  
   if(this.precio.size() < 5){
   this.aux = 5 - this.precio.size();
       
   for(Integer i = 0; i < this.aux; i ++){
      tabla.addCell(this.getCell("          "));
   } 
   }
   
    return   tabla; 
   }
   
   
   
   public PdfPCell Celda8_Observaciones (){
   PdfPCell Observacion = new PdfPCell(new Paragraph("  Observaciones      ", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
   return Observacion;               
   }
  
   
   public PdfPCell Celda9_Observaciones (){
   PdfPCell celda9 = new PdfPCell(new Paragraph("" + this.Observaciones + "", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));  // creo la celda
   celda9.setFixedHeight(30); 
   return celda9;               
   }
   
   
   public PdfPCell Celda10_Contabilidad (){
    PdfPCell contabilidad = new PdfPCell(new Paragraph("Contablilidad", FontFactory.getFont("arial",7,Font.BOLD, BaseColor.BLACK)));
    return contabilidad;             
   }
   
   
   public PdfPTable Celda_Contablilidad_2 () throws DocumentException, IOException{
   PdfPTable tabla = new PdfPTable(2);
    tabla.setWidthPercentage(15);
      
  tabla.addCell(this.Celda11_SubTotal());
  tabla.addCell(this.Celda12_SubTotal());
   
 if(Double.valueOf(this.descuento) > 0.0){      
 
     tabla.addCell(this.Celda13_Descuento());  
     tabla.addCell(this.Celda14_Descuento());  
  }
  
  tabla.addCell(this.Celda11_Total());
  tabla.addCell(this.Celda12_Total());
    
  tabla.addCell(this.Celda15_Sena());
  tabla.addCell(this.Celda16_Sena());
  
  tabla.addCell(this.Celda17_Saldo());
  tabla.addCell(this.Celda18_Saldo());
  

   return tabla;
   }
   
   public PdfPCell Celda11_SubTotal () throws DocumentException, IOException{
     return getCell("Subtotal");
   }
   
   public PdfPCell Celda12_SubTotal () throws DocumentException, IOException{
       String subtotal = null;
       subtotal = this.total;
     return getCell(subtotal);
   }
   
   
   public PdfPCell Celda11_Total () throws DocumentException, IOException{
    return getCell("Total");
   }
   
   public PdfPCell Celda12_Total () throws DocumentException, IOException{
       String t = null;
       Double cuenta = null;
       
       cuenta = Double.valueOf(this.total) - Double.valueOf(this.descuento);
       
       t = String.valueOf(cuenta);
   return getCell(t);
   }
   
   public PdfPCell Celda13_Descuento () throws DocumentException, IOException{
   return getCell("Descuento"); 
   }
   
   public PdfPCell Celda14_Descuento () throws DocumentException, IOException{
       return getCell(this.descuento); 
   }
   
   public PdfPCell Celda15_Sena () throws DocumentException, IOException{
       return getCell("Seña"); 
   }
   
   public PdfPCell Celda16_Sena () throws DocumentException, IOException{
    return getCell(this.sena); 
   }
   
   
   public PdfPCell Celda17_Saldo() throws DocumentException, IOException{
     return getCell("Saldo"); 
   }
      
   public PdfPCell Celda18_Saldo() throws DocumentException, IOException{
       return getCell(this.saldo); 
   }
   
   
   
   public void CrearTicket( ) throws DocumentException{
       
       this.mipdf.open();
       
       this.mipdf.add(this.tabla_principal);
       
       mipdf.close();
                
    
       
       
       byte[] c;
		c = mipdf.toString().getBytes();


		try {

			outputStream = new FileOutputStream(ruta_destino);
                        
                        JOptionPane.showMessageDialog(null,
				"Ticket Creado ....");

		} catch (FileNotFoundException e) {

			e.printStackTrace();

		}

		DocFlavor docFormat = DocFlavor.BYTE_ARRAY.AUTOSENSE;
		Doc document = new SimpleDoc(c, docFormat, null);
		PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
		PrintService defaultPrintService = PrintServiceLookup
				.lookupDefaultPrintService();
		System.out.println("Nombre impresora por defecto: "
				+ defaultPrintService.getName());
		if (defaultPrintService != null) {

			DocPrintJob printJob = defaultPrintService.createPrintJob();

			try {

				printJob.print(document, attributeSet);

			} catch (Exception e) {

				e.printStackTrace();

			}

		}    
   }
   
   
   public void Colocar_Destino() {
		FileNameExtensionFilter filter = new FileNameExtensionFilter(
				"Archivo PDF", "pdf", "PDF");
		JFileChooser fileChooser = new JFileChooser();
		fileChooser.setFileFilter(filter);
                fileChooser.setSelectedFile(new File("Ticket " + orden));
		int result = fileChooser.showSaveDialog(null);

                if (result == JFileChooser.APPROVE_OPTION) {
			this.ruta_destino = fileChooser.getSelectedFile().getAbsoluteFile();
		}
                else{
                    JOptionPane.showMessageDialog(null, "No se ha concretado la impresión.");
                }
        
    }
   
   
   
  
  public PdfPTable DisenarTicket(PdfPCell c) throws DocumentException, IOException{
     
      
      PdfPTable tabla_cliente = new PdfPTable(1);
  
      tabla_cliente.setWidthPercentage(55);
        
      tabla_cliente.addCell(c);      
         
      tabla_cliente.addCell(this.Celda2_Encabezado());                             // agrego  el encabezado a la celda 
      
      tabla_cliente.addCell(this.Celda3_NumOrden());
      
      tabla_cliente.addCell(this.Celda4_Fecha());
      
      tabla_cliente.addCell(this.Celda5_Cliente());
      
      //////////////////////////////////////////////////////////////////////////
      
      float[] widths = {9 ,31  , 8};
      PdfPTable tabla1 = new PdfPTable(widths);                                    // creo la tabla dentro de la celda  
      tabla1.setWidthPercentage(60);
                
      tabla1.addCell(this.Celda6_Cantidad());
      tabla1.addCell(this.Celda6_Servicio());     
      tabla1.addCell(this.Celda6_Precio());
      
      tabla1.addCell(this.Celda7_Cantidad());
      tabla1.addCell(this.Celda7_Servicio());    
      tabla1.addCell(this.Celda7_Precio());
      
      tabla1.setSpacingAfter(5);
      
      //////////////////////////////////////////////////////////////////////////
      
      PdfPTable tabla2 = new PdfPTable(1); 
      tabla2.setWidthPercentage(40);
      
      tabla2.addCell(this.Celda8_Observaciones());
      tabla2.addCell(this.Celda9_Observaciones());
      
      //////////////////////////////////////////////////////////////////////////
           
  tabla_cliente.addCell(tabla1);
  tabla_cliente.addCell(tabla2);
  tabla_cliente.addCell(this.Celda10_Contabilidad());
  tabla_cliente.addCell(this.Celda_Contablilidad_2());
  
  return tabla_cliente;
  }
  
  
  
}
